#include <iostream>
#include <vector>
#include <string>

class DataCollector {
public:
    void gatherData() {
        data.push_back("Data 1");
        data.push_back("Data 2");
        data.push_back("Data 3");
    }
    const std::vector<std::string>& getData() const {
        return data;
    }

private:
    std::vector<std::string> data;
};

class ReportFormatter {
public:
    void formatReport(const std::vector<std::string>& data) {
        for (const auto& d : data) {
            formattedData += d + "\n";
        }
    }
    const std::string& getFormattedData() const {
        return formattedData;
    }

private:
    std::string formattedData;
};

class ReportPrinter {
public:
    void printReport(const std::string& report) const {
        std::cout << report;
    }
};

int main() {
    DataCollector collector;
    collector.gatherData();

    ReportFormatter formatter;
    formatter.formatReport(collector.getData());

    ReportPrinter printer;
    printer.printReport(formatter.getFormattedData());
    return 0;
}